Cursor Attributes (%FOUND, %NOTFOUND, %ROWCOUNT, %ISOPEN)

Database Tutorials - পিএল/এসকিউএল (PL/SQL) PL/SQL এর Cursor Management |
147
147

PL/SQL কাসরস (Cursors) ব্যবহার করে আপনি SQL কুইরিগুলি এক্সিকিউট করতে পারেন এবং ডেটার প্রতি রেকর্ডে একে একে কাজ করতে পারেন। কাসরসের সাথে কাজ করার সময়, কিছু গুরুত্বপূর্ণ কাসর অ্যাট্রিবিউট ব্যবহার করা হয় যা কাসরের অবস্থা বা ফলাফল সম্পর্কে গুরুত্বপূর্ণ তথ্য প্রদান করে। এই অ্যাট্রিবিউটগুলি বিশেষভাবে ইমপ্লিসিট এবং এক্সপ্লিসিট কাসরদের সাথে ব্যবহৃত হয়।

নীচে কিছু সাধারণ কাসর অ্যাট্রিবিউট সম্পর্কে বিস্তারিত আলোচনা করা হলো:


১. %FOUND

  • বর্ণনা: %FOUND অ্যাট্রিবিউটটি চেক করে যে কাসরটি কোনো রেকর্ড পেয়েছে কিনা। এটি একটি বুলিয়ান মান ফেরত দেয়:
    • TRUE যদি কাসরটি কোনো রেকর্ড পেয়ে থাকে।
    • FALSE যদি কাসরটি কোনো রেকর্ড না পায়।
  • ব্যবহার: সাধারণত কাসর লুপে বা কাসরকে এক্সিকিউট করার পরে চেক করার জন্য এটি ব্যবহার করা হয়।

উদাহরণ:

DECLARE
  CURSOR emp_cursor IS
    SELECT employee_id, first_name FROM employees;
  
  v_emp_id employees.employee_id%TYPE;
  v_first_name employees.first_name%TYPE;
BEGIN
  OPEN emp_cursor;
  FETCH emp_cursor INTO v_emp_id, v_first_name;

  IF emp_cursor%FOUND THEN
    DBMS_OUTPUT.PUT_LINE('Employee found: ' || v_first_name);
  ELSE
    DBMS_OUTPUT.PUT_LINE('No employee found.');
  END IF;

  CLOSE emp_cursor;
END;

২. %NOTFOUND

  • বর্ণনা: %NOTFOUND অ্যাট্রিবিউটটি %FOUND এর বিপরীত। এটি চেক করে যে কাসরটি কোনো রেকর্ড পায়নি কিনা। এটি TRUE ফেরত দেয় যদি কাসরটি কোনো রেকর্ড না পায় এবং FALSE ফেরত দেয় যদি কাসরটি রেকর্ড পায়।
  • ব্যবহার: এটি ব্যবহার করা হয় যখন আপনি চান, কাসরটি যদি কোনো রেকর্ড না পায়, তাহলে কিছু কাজ বা লগ সিস্টেমে তথ্য প্রদান করুন।

উদাহরণ:

DECLARE
  CURSOR emp_cursor IS
    SELECT employee_id, first_name FROM employees;
  
  v_emp_id employees.employee_id%TYPE;
  v_first_name employees.first_name%TYPE;
BEGIN
  OPEN emp_cursor;
  FETCH emp_cursor INTO v_emp_id, v_first_name;

  IF emp_cursor%NOTFOUND THEN
    DBMS_OUTPUT.PUT_LINE('No records found.');
  ELSE
    DBMS_OUTPUT.PUT_LINE('Record fetched: ' || v_first_name);
  END IF;

  CLOSE emp_cursor;
END;

৩. %ROWCOUNT

  • বর্ণনা: %ROWCOUNT অ্যাট্রিবিউটটি কাসরটি কতটি রেকর্ড ফেরত দিয়েছে তার সংখ্যা দেখায়। এটি একটি ইনটিজার মান ফেরত দেয় এবং কাসরের সাথে করা সব ফেচ অপারেশনের পরে এটি আপডেট হয়।
  • ব্যবহার: এটি সাধারণত ব্যবহৃত হয় যখন আপনি জানতে চান কাসরটি কতটি রেকর্ড প্রক্রিয়া করেছে বা প্রক্রিয়া করতে সক্ষম হয়েছে।

উদাহরণ:

DECLARE
  CURSOR emp_cursor IS
    SELECT employee_id, first_name FROM employees;
  
  v_emp_id employees.employee_id%TYPE;
  v_first_name employees.first_name%TYPE;
BEGIN
  OPEN emp_cursor;
  
  LOOP
    FETCH emp_cursor INTO v_emp_id, v_first_name;
    EXIT WHEN emp_cursor%NOTFOUND;
    DBMS_OUTPUT.PUT_LINE('Employee: ' || v_first_name);
  END LOOP;

  DBMS_OUTPUT.PUT_LINE('Total rows fetched: ' || emp_cursor%ROWCOUNT);

  CLOSE emp_cursor;
END;

এখানে %ROWCOUNT কাসরের মাধ্যমে কতটি রেকর্ড প্রক্রিয়া করা হয়েছে তা জানাবে।


৪. %ISOPEN

  • বর্ণনা: %ISOPEN অ্যাট্রিবিউটটি চেক করে যে কাসরটি ওপেন আছে কিনা। এটি একটি বুলিয়ান মান ফেরত দেয়:
    • TRUE যদি কাসরটি ওপেন থাকে।
    • FALSE যদি কাসরটি বন্ধ থাকে।
  • ব্যবহার: এটি সাধারণত কাসরটি ওপেন থাকা অবস্থায় ডেটা ফেচ করতে ব্যবহৃত হয়, এবং কাসরটি বন্ধ হওয়ার আগে এটি চেক করা যেতে পারে।

উদাহরণ:

DECLARE
  CURSOR emp_cursor IS
    SELECT employee_id, first_name FROM employees;
  
  v_emp_id employees.employee_id%TYPE;
  v_first_name employees.first_name%TYPE;
BEGIN
  IF NOT emp_cursor%ISOPEN THEN
    OPEN emp_cursor;
  END IF;

  FETCH emp_cursor INTO v_emp_id, v_first_name;
  DBMS_OUTPUT.PUT_LINE('Employee: ' || v_first_name);

  CLOSE emp_cursor;
END;

এখানে %ISOPEN ব্যবহার করে আমরা যাচাই করছি যে কাসরটি ওপেন আছে কিনা, যদি না থাকে তবে কাসরটি ওপেন করা হচ্ছে।


উপসংহার

PL/SQL কাসর অ্যাট্রিবিউটগুলি কাসরের অবস্থা জানার জন্য অত্যন্ত গুরুত্বপূর্ণ। এর মাধ্যমে আপনি কাসরটি কতটা কার্যকরভাবে ডেটা প্রক্রিয়া করছে, কবে কাসরটি কোনো রেকর্ড পেয়েছে বা পায়নি, এবং কাসরটি এখনও খোলা আছে কিনা তা নির্ধারণ করতে পারবেন। এগুলি কাসর ব্যবহারের প্রক্রিয়া উন্নত করার জন্য অপরিহার্য।

Content added By
Promotion